let that = null,
	app = getApp(),
	config = app.globalData.config,
	cache = config.storage,
	helper = app.globalData.helper;
import { post } from '@/common/js/http.js';

export default {
	data() {
		return {
			isLoad: false,
			activeExamType: '', // 当前选中的考试类型ID
			examTypeList: [], // 考试类型列表
			examData: {}, // 考试数据，包含专业和课程信息
			// 我的科目（已选中）
			mySubjects: []
		};
	},
	onLoad(options) {
		that = this;
		// 直接使用传入的exam_id获取专业和课程数据
		that.mySubjects = cache.getCurrentCourseData();
		that.activeExamType = options.exam_id;
		that.getTypeMajorData(options.exam_id);
	},
	methods: {
		/**
		 * 通用导航方法
		 * @param {String} url 完整的导航地址
		 */
		goTo(url) {
			uni.navigateTo({url});
		},
		
		/**
		 * 返回上一页
		 */
		goBack() {
			uni.navigateBack();
		},
		

		
		/**
		 * 获取考试类型的专业和课程数据
		 * @param {Number} examId 考试类型ID
		 */
		async getTypeMajorData(examId) {
			try {
				let res = await post('exam/get_type_major', { exam_id: examId });
				console.log('获取到的专业和课程数据：', res.data);
				// 直接保存考试数据
				that.examData = res.data;
				// 处理数据，为课程添加selected属性并初始化我的科目
				that.processSubjectData();
			} catch (e) {
				console.error('获取专业和课程数据失败：', e);
				app.showToast('获取专业和课程数据失败');
			}
		},
		
		/**
		 * 处理科目数据，为examData中的课程添加is_collected属性
		 */
		processSubjectData() {

			
			// 为每个专业和课程添加is_collected属性
			if (that.examData && that.examData.professions) {
				that.examData.professions.forEach(profession => {
					if (profession.courses && profession.courses.length > 0) {
						profession.courses.forEach(course => {
							course.is_collected = that.mySubjects && that.mySubjects.some(subject => subject.id === course.id) ? 1 : 0;
						});
					}
				});
			}
		},
		

		/**
		 * 切换课程选择状态
		 * @param {Number} professionIndex 专业索引
		 * @param {Number} courseIndex 课程索引
		 */
		toggleCourse(professionIndex, courseIndex) {
			if (that.examData.professions && that.examData.professions[professionIndex] && that.examData.professions[professionIndex].courses) {
				let course = that.examData.professions[professionIndex].courses[courseIndex];
				if (course) {
					course.is_collected = course.is_collected === 1 ? 0 : 1;
					// 如果选中，添加到我的科目；如果取消选中，从我的科目中移除
					if (course.is_collected === 1) {
						// 添加到我的科目（避免重复添加）
						const exists = that.mySubjects.some(subject => subject.id === course.id);
						if (!exists) {
							that.mySubjects.push({
								id: course.id,
								name: course.name
							});
						}
					} else {
						// 从我的科目中移除
						that.mySubjects = that.mySubjects.filter(subject => subject.id !== course.id);
					}
					// 强制触发视图更新
					that.$forceUpdate();
				}
			}
		},
		
		/**
		 * 移除我的科目
		 * @param {Number} index 科目索引
		 */
		removeMySubject(index) {
			const removedSubject = that.mySubjects[index];
			// 从我的科目中移除
			that.mySubjects.splice(index, 1);
			
			// 在examData中找到对应的课程，将其is_collected状态设为0
			if (that.examData && that.examData.professions) {
				that.examData.professions.forEach(profession => {
					if (profession.courses) {
						profession.courses.forEach(course => {
							if (course.id === removedSubject.id) {
								course.is_collected = 0;
							}
						});
					}
				});
			}
			
			// 强制触发视图更新
			that.$forceUpdate();
		},
		
		/**
		 * 确认选择
		 */
		async confirmSelection() {
			// 收集所有选中的课程ID
			const courseIds = that.mySubjects.map(subject => subject.id);
			if (courseIds.length === 0) {
				app.showToast('请至少选择一门课程');
				return;
			}

			try {
				// 调用批量加入课程接口
				// await post('v2/batchJoinCourse', {
				// 	course_ids: courseIds,
				// 	exam_id: 1,
				// 	join: 2
				// });

				// 保存当前选中的课程数据到缓存
				app.globalData.config.storage.setCurrentCourseData(that.mySubjects);
								
				// 返回上一页并传递数据
				uni.reLaunch({
					url: '/pages/index/index'
				});
				
			} catch (e) {
				console.error('批量加入课程失败：', e);
				app.showToast('课程选择失败，请重试');
			}
		}
	}
};